package com.tencent.sr.iris.activity.interfaces.request.acticity;

import com.tencent.sr.iris.activity.interfaces.enums.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
 * 活动参与用户统计
 *
 * @author nixiaolin
 * @date 2023/4/15 15:11
 */
@Data
@Accessors(chain = true)
@ApiModel("活动参与用户统计请求参数")
public class ActivityUserStaticRequest {

    @NotBlank(message = "uid不能为空")
    @ApiModelProperty("统计人的uid")
    private String uid;

    @ApiModelProperty("开始时间")
    private Long startTime;

    @ApiModelProperty("结束时间")
    private Long endTime;

    @NotEmpty(message = "活动类型不能为空")
    @ApiModelProperty("活动类型 MONTH_GIFT：月月领 REGIST_GIFT：注册有礼 INVITE_GIFT：邀请有礼 " +
            "LEVEL_UP_FOSTER_GIFT：升级有礼(培育奖) LEVEL_UP_PROMO_GIFT：升级有礼(晋升奖)")
    private List<ActivityTypeEnum> activityTypes;

    @ApiModelProperty("对应活动类型的活动id，一个活动类型可对应多个活动id：\n" +
            "  月月领活动id：MONTH_GIFT；\n" +
            "  邀请有礼活动id：INVITE_GIFT：普通邀请有礼，SPECIAL_INVITE_REWARD ：特邀邀请有礼；\n" +
            "  注册有礼活动id：REGIST_GIFT\n" +
            "  升级有礼(培育奖)活动id：LEVEL_UP_FOSTER_GIFT\n" +
            "  升级有礼(晋升奖)活动id：LEVEL_UP_PROMO_GIFT\n")
    private List<ActivityIdEnum> activityIds;

    @ApiModelProperty("是否已贡献 NO-未贡献 YES-已贡献 LIMITED-已超限")
    private IsParticipatedEnum participated;

    @ApiModelProperty("任务id")
    private List<ActivityTaskIdEnum> taskIds;

    @ApiModelProperty("true-老邀请有礼数据（0621版本之前）false-非老邀请有礼数据")
    private Boolean oldInviteData;

    @ApiModelProperty("0-0621版本之前，1-0621版本，2-0706版本")
    private InviteGiftVersionEnum inviteGiftVersion;

    @ApiModelProperty("true时，startTime和endTime查的是currentTaskStartTime字段，否则查createTime字段")
    private boolean queryCurrentTaskStartTime;

    /**
     * @see com.tencent.sr.iris.activity.common.enums.TaskRecordAwardIssueStatusEnum
     */
    @ApiModelProperty("奖品发放状态")
    private List<Byte> awardIssueStatus;
}
